package com.zhengaz.auth.service;

import cn.hutool.core.util.StrUtil;
import com.zhengaz.auth.form.LoginForm;
import com.zhengaz.common.core.constant.CacheConstants;
import com.zhengaz.common.core.exception.ServiceException;
import com.zhengaz.common.core.utils.Assert;
import com.zhengaz.common.core.utils.IpUtils;
import com.zhengaz.common.redis.utils.RedisUtil;
import com.zhengaz.model.system.model.LoginUser;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * @author zhengzg
 * @create 2023-09-11 16:45
 */
@Slf4j
@Service
public class SystemLoginService {

    @Resource
    private RedisUtil redisUtil;


    /**
     * 系统登录接口（需要手动补充登录逻辑）
     *
     * @param loginForm 登录表单
     * @return 登录用户信息
     */
    public LoginUser login(LoginForm loginForm) {
        // 校验黑名单
        String blackStr = StrUtil.toString(redisUtil.get(CacheConstants.SYS_LOGIN_BLACKIPLIST));
        if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) throw new ServiceException("抱歉！您的IP已被系统列入黑名单，请联系管理员！");

        // TODO 查询用户信息（需要手动补充关系）

        return new LoginUser();
    }

    public void logout(String logoutName) {
        log.info("<----------------------------------------- 用户登出 --------------------------------------------------->");
        // TODO 手动补充登出逻辑
    }

    public void register(String username, String password) {
        Assert.notBlank(username, "请输入正确用户名");
        Assert.notBlank(password, "请输入正确密码");

        // TODO 手动补充注册逻辑
    }
}
